草庐IT

java - Java 和 Haskell 之间的通信

全部标签

java - 我将如何在 Java 中实现 Go 的无缓冲 channel ?

Go同时提供unbufferedandbufferedchannels用于goroutines(线程)之间的通信。是straightforward在Java中将缓冲channel实现为有界缓冲区。Go的无缓冲channel要求一个协程在另一个协程接收时发送。任何人都可以向我解释如何在Java中实现它吗? 最佳答案 在Java中你可以使用SynchronousQueue,Java8的源代码在这里http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/

google-app-engine - 在应用引擎模块之间共享数据

我正在尝试使用appengine数据存储在appengine模块之间共享key。我在一个模块中编写key,我可以从该模块中读取它。尝试从第二个模块读取它不起作用,我没有得到这样的实体响应。在模块之间共享key的最佳方式是什么?我可以为此使用数据存储吗?根据我在文档数据存储中阅读的内容,服务之间共享。但它似乎对我不起作用。 最佳答案 您可能会遇到最终一致性问题。数据存储是分布式的,因此一个服务可能会命中数据的一致版本,而另一个服务(模块)会命中另一个过时的版本。数据存储绝对是一种在模块之间共享数据的方式,因此它可能是一个一致性问题,除

go - go 对象组件可以以复合模式相互通信吗?

我正在尝试实现复合设计模式。我了解了如何组合对象的对象。在这个例子中,我有一个运动员和游泳功能。typeAthletestruct{namestring}typeCompositeAthletestruct{athleteAthleteTrainfunc(namestring)}但是如果我需要在创建组合对象后传递名称:comp:=CompositeAthlete{athlete:athlete,Train:Swim,}comp.Train(athlete.name)是否有可能注入(inject)一个能够读取被注入(inject)对象内部的方法;packagemainimport("fm

插件和主应用程序之间的 Golang 包版本

我不是围棋专家,所以我这样做的方式可能不是围棋的理想方法。本质上,我有一个主应用程序需要能够为其编写插件。这些插件都遵循给定的格式,并使用gobuild-buildmode=plugin构建。我不希望最终用户每次都需要重新编译主应用程序。理想情况下,您应该能够毫无问题地将它拖放到新计算机上。为了在插件和应用程序之间传递信息,我定义了第三个名为“common”的包,我将其视为C头文件。它只定义了接口(interface)和一些两者都可以使用的整数常量。应用程序生成符合接口(interface)的类型,并可以将它们传递给插件使用。当我编译时,它似乎工作正常,应用程序可以使用plugin.O

go - 服务器和客户端之间明显的死锁

我有一个测试函数,它既创建服务器又生成充当客户端的goroutine。现在,只需从客户端向服务器发送一条消息就可以了,但是如果我想创建一个交换,它们似乎会死锁,因为测试永远不会运行到完成(如果没有设置r/w截止日期)。例如,我希望客户端向服务器发送消息,服务器复制该消息并将其发送回客户端,然后客户端验证接收到的消息是否相同。这是我的测试代码:funcTestSendAwait(t*testing.T){m:="HelloWorld"gofunc(){conn,err:=net.Dial("tcp",testingAddr)iferr!=nil{t.Fatal(err)}defercon

java - 如何使用 JNA 为具有多个返回值的 go 函数编写接口(interface)

我正在尝试导出一些Go函数并在Java中调用它们,使用JNA,但我不知道如何在Java中为具有多个返回值的Go函数定义接口(interface)。假设Go函数是://exportgenerateKeysfuncgenerateKeys()(privateKey,publicKey[]byte){return.....}返回值有两项,但在Java中,只允许有一项返回值。我能做什么? 最佳答案 cgo为多个返回值创建专用的C结构,并将各个返回值作为结构元素。在您的示例中,cgo将生成/*ReturntypeforgenerateKeys

go - Testify 套件中的 SetupSuite 和 SetupTest 之间的区别

我试图找出SetupSuite和SetupTest之间的区别已经有一段时间了。根据博客上的信息,我了解到SetupSuite在整个套件之前运行,而SetupTest在每个测试用例之前运行。但是在这种情况下有什么实际的例子呢?在这两种情况下,依赖注入(inject)有何不同? 最佳答案 通常您希望使用SetupTest以便每个单独的测试函数在干净的环境中运行。SetupSuite在设置代码耗时且未在任何测试中修改的情况下很有用。这可能有用的一个例子是,如果您正在测试从数据库读取的代码,并且所有测试都使用相同的数据并且只运行SELECT

file - 在 Golang 中的文件之间追加

我可以像这样在Golang的文件末尾追加任何新内容f,err:=os.OpenFile(filename,os.O_APPEND|os.O_WRONLY,0600)iferr!=nil{panic(err)}deferf.Close()if_,err=f.WriteString(text);err!=nil{panic(err)}但是我怎样才能在文件中间或特定行或文本之后附加一些内容呢? 最佳答案 在磁盘上,文件(字节序列)的存储方式类似于数组。因此,附加到文件的中间需要在您写入的点之后移动字节。然后,假设您有一个要追加的索引idx

go - go语句之间的 sleep 语句

我今天在代码库中看到了以下设置。Sleep()函数有什么作用吗?我想这是为了保证serverA在serverB启动之前运行,但是由于两者的执行可能会推迟到以后,所以这并不能真正保证,对吗?funcmain(){goutil.Execute("run",serverA)time.Sleep(time.Millisecond*500)goutil.Execute("run",serverB)for{log.Println("running")time.Sleep(time.Second*30)}} 最佳答案 在下一个goroutine尝

unit-testing - 如何在 Golang 中实现 stub ? stub 和模拟之间有什么区别?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion我在Golang的单元测试中使用模拟。但是在Golang的实现代码中如何区分stub和mock呢?